<html xmlns:v="urn:schemas-microsoft-com:vml"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:w="urn:schemas-microsoft-com:office:word"
xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<meta name=ProgId content=Word.Document>
<meta name=Generator content="Microsoft Word 9">
<meta name=Originator content="Microsoft Word 9">
<link rel=File-List href="./AppendixD_files/filelist.xml">
<title>Appendix D</title>
<style>
<!--
 /* Font Definitions */
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:1627421319 -2147483648 8 0 66047 0;}
@font-face
	{font-family:"Microsoft Sans Serif";
	panose-1:2 11 6 4 2 2 2 2 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:1627421663 -2147483648 8 0 66047 0;}
@font-face
	{font-family:BrushScrD;
	panose-1:3 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:script;
	mso-font-pitch:variable;
	mso-font-signature:-2147483473 30971 0 0 147 0;}
@font-face
	{font-family:"Signet Roundhand";
	mso-font-alt:"Courier New";
	mso-font-charset:0;
	mso-generic-font-family:script;
	mso-font-pitch:variable;
	mso-font-signature:7 0 0 0 19 0;}
@font-face
	{font-family:"Brush Script MT";
	mso-font-alt:"Courier New";
	mso-font-charset:0;
	mso-generic-font-family:script;
	mso-font-pitch:variable;
	mso-font-signature:3 0 0 0 1 0;}
@font-face
	{font-family:AbsolutDB;
	mso-font-alt:"Courier New";
	mso-font-charset:0;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:3 0 0 0 1 0;}
@font-face
	{font-family:Traffic;
	mso-font-alt:"Courier New";
	mso-font-charset:0;
	mso-generic-font-family:decorative;
	mso-font-pitch:variable;
	mso-font-signature:7 0 0 0 19 0;}
 /* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-parent:"";
	margin:0in;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";
	color:windowtext;}
h1
	{mso-style-next:Normal;
	margin-top:0in;
	margin-right:-.35pt;
	margin-bottom:0in;
	margin-left:0in;
	margin-bottom:.0001pt;
	text-align:justify;
	mso-pagination:widow-orphan;
	page-break-after:avoid;
	mso-outline-level:1;
	font-size:11.0pt;
	mso-bidi-font-size:10.0pt;
	font-family:"Times New Roman";
	color:black;
	mso-font-kerning:0pt;
	mso-ansi-language:EN-GB;
	font-weight:normal;
	text-decoration:underline;
	text-underline:single;}
h2
	{mso-style-next:Normal;
	margin-top:0in;
	margin-right:-.35pt;
	margin-bottom:0in;
	margin-left:0in;
	margin-bottom:.0001pt;
	text-align:center;
	mso-pagination:widow-orphan;
	page-break-after:avoid;
	mso-outline-level:2;
	font-size:11.0pt;
	mso-bidi-font-size:10.0pt;
	font-family:"Times New Roman";
	color:black;
	mso-ansi-language:EN-GB;
	font-weight:normal;
	font-style:italic;
	mso-bidi-font-style:normal;}
h3
	{mso-style-next:Normal;
	margin-top:0in;
	margin-right:-.35pt;
	margin-bottom:0in;
	margin-left:0in;
	margin-bottom:.0001pt;
	text-align:justify;
	mso-pagination:widow-orphan;
	page-break-after:avoid;
	mso-outline-level:3;
	font-size:14.0pt;
	mso-bidi-font-size:10.0pt;
	font-family:"Times New Roman";
	color:black;
	mso-ansi-language:EN-GB;
	font-weight:normal;}
h4
	{mso-style-next:Normal;
	margin-top:0in;
	margin-right:-.35pt;
	margin-bottom:0in;
	margin-left:0in;
	margin-bottom:.0001pt;
	text-align:justify;
	mso-pagination:widow-orphan;
	page-break-after:avoid;
	mso-outline-level:4;
	font-size:11.0pt;
	mso-bidi-font-size:10.0pt;
	font-family:"Times New Roman";
	color:black;
	mso-ansi-language:EN-GB;
	font-weight:bold;
	mso-bidi-font-weight:normal;
	text-decoration:underline;
	text-underline:single;}
h5
	{mso-style-next:Normal;
	margin-top:0in;
	margin-right:-.35pt;
	margin-bottom:0in;
	margin-left:0in;
	margin-bottom:.0001pt;
	text-align:justify;
	mso-pagination:widow-orphan;
	page-break-after:avoid;
	mso-outline-level:5;
	font-size:14.0pt;
	mso-bidi-font-size:10.0pt;
	font-family:"Times New Roman";
	color:black;
	mso-ansi-language:EN-GB;
	font-weight:bold;
	mso-bidi-font-weight:normal;
	text-decoration:underline;
	text-underline:single;}
h6
	{mso-style-next:Normal;
	margin-top:0in;
	margin-right:-.35pt;
	margin-bottom:0in;
	margin-left:0in;
	margin-bottom:.0001pt;
	text-align:justify;
	text-indent:.5in;
	mso-pagination:widow-orphan;
	page-break-after:avoid;
	mso-outline-level:6;
	font-size:11.0pt;
	mso-bidi-font-size:10.0pt;
	font-family:"Times New Roman";
	color:black;
	mso-ansi-language:EN-GB;
	font-weight:normal;
	font-style:italic;
	mso-bidi-font-style:normal;}
p.MsoHeading7, li.MsoHeading7, div.MsoHeading7
	{mso-style-next:Normal;
	margin-top:0in;
	margin-right:-.35pt;
	margin-bottom:0in;
	margin-left:0in;
	margin-bottom:.0001pt;
	text-align:justify;
	mso-pagination:widow-orphan;
	page-break-after:avoid;
	mso-outline-level:7;
	font-size:11.0pt;
	mso-bidi-font-size:10.0pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";
	color:black;
	mso-ansi-language:EN-GB;
	font-style:italic;
	mso-bidi-font-style:normal;}
p.MsoHeading8, li.MsoHeading8, div.MsoHeading8
	{mso-style-next:Normal;
	margin-top:0in;
	margin-right:-.35pt;
	margin-bottom:0in;
	margin-left:0in;
	margin-bottom:.0001pt;
	text-align:justify;
	mso-pagination:widow-orphan;
	page-break-after:avoid;
	mso-outline-level:8;
	font-size:14.0pt;
	mso-bidi-font-size:10.0pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";
	color:black;
	mso-ansi-language:EN-GB;
	text-decoration:underline;
	text-underline:single;}
p.MsoHeading9, li.MsoHeading9, div.MsoHeading9
	{mso-style-next:Normal;
	margin-top:0in;
	margin-right:-.35pt;
	margin-bottom:0in;
	margin-left:0in;
	margin-bottom:.0001pt;
	text-align:center;
	mso-pagination:widow-orphan;
	page-break-after:avoid;
	mso-outline-level:9;
	font-size:11.0pt;
	mso-bidi-font-size:10.0pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";
	color:black;
	mso-ansi-language:EN-GB;
	font-weight:bold;
	mso-bidi-font-weight:normal;}
p.MsoIndex1, li.MsoIndex1, div.MsoIndex1
	{mso-style-update:auto;
	mso-style-next:Normal;
	margin-top:0in;
	margin-right:0in;
	margin-bottom:0in;
	margin-left:11.0pt;
	margin-bottom:.0001pt;
	text-indent:-11.0pt;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	mso-bidi-font-size:10.5pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";
	color:black;}
p.MsoIndex2, li.MsoIndex2, div.MsoIndex2
	{mso-style-update:auto;
	mso-style-next:Normal;
	margin-top:0in;
	margin-right:0in;
	margin-bottom:0in;
	margin-left:22.0pt;
	margin-bottom:.0001pt;
	text-indent:-11.0pt;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	mso-bidi-font-size:10.5pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";
	color:black;}
p.MsoIndex3, li.MsoIndex3, div.MsoIndex3
	{mso-style-update:auto;
	mso-style-next:Normal;
	margin-top:0in;
	margin-right:0in;
	margin-bottom:0in;
	margin-left:33.0pt;
	margin-bottom:.0001pt;
	text-indent:-11.0pt;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	mso-bidi-font-size:10.5pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";
	color:black;}
p.MsoIndex4, li.MsoIndex4, div.MsoIndex4
	{mso-style-update:auto;
	mso-style-next:Normal;
	margin-top:0in;
	margin-right:0in;
	margin-bottom:0in;
	margin-left:44.0pt;
	margin-bottom:.0001pt;
	text-indent:-11.0pt;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	mso-bidi-font-size:10.5pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";
	color:black;}
p.MsoIndex5, li.MsoIndex5, div.MsoIndex5
	{mso-style-update:auto;
	mso-style-next:Normal;
	margin-top:0in;
	margin-right:0in;
	margin-bottom:0in;
	margin-left:55.0pt;
	margin-bottom:.0001pt;
	text-indent:-11.0pt;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	mso-bidi-font-size:10.5pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";
	color:black;}
p.MsoIndex6, li.MsoIndex6, div.MsoIndex6
	{mso-style-update:auto;
	mso-style-next:Normal;
	margin-top:0in;
	margin-right:0in;
	margin-bottom:0in;
	margin-left:66.0pt;
	margin-bottom:.0001pt;
	text-indent:-11.0pt;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	mso-bidi-font-size:10.5pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";
	color:black;}
p.MsoIndex7, li.MsoIndex7, div.MsoIndex7
	{mso-style-update:auto;
	mso-style-next:Normal;
	margin-top:0in;
	margin-right:0in;
	margin-bottom:0in;
	margin-left:77.0pt;
	margin-bottom:.0001pt;
	text-indent:-11.0pt;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	mso-bidi-font-size:10.5pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";
	color:black;}
p.MsoIndex8, li.MsoIndex8, div.MsoIndex8
	{mso-style-update:auto;
	mso-style-next:Normal;
	margin-top:0in;
	margin-right:0in;
	margin-bottom:0in;
	margin-left:88.0pt;
	margin-bottom:.0001pt;
	text-indent:-11.0pt;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	mso-bidi-font-size:10.5pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";
	color:black;}
p.MsoIndex9, li.MsoIndex9, div.MsoIndex9
	{mso-style-update:auto;
	mso-style-next:Normal;
	margin-top:0in;
	margin-right:0in;
	margin-bottom:0in;
	margin-left:99.0pt;
	margin-bottom:.0001pt;
	text-indent:-11.0pt;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	mso-bidi-font-size:10.5pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";
	color:black;}
p.MsoFootnoteText, li.MsoFootnoteText, div.MsoFootnoteText
	{margin:0in;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	mso-bidi-font-size:10.0pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";
	color:black;}
p.MsoHeader, li.MsoHeader, div.MsoHeader
	{margin:0in;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	tab-stops:center 207.65pt right 415.3pt;
	font-size:11.0pt;
	mso-bidi-font-size:10.0pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";
	color:black;}
p.MsoFooter, li.MsoFooter, div.MsoFooter
	{margin:0in;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	tab-stops:center 207.65pt right 415.3pt;
	font-size:11.0pt;
	mso-bidi-font-size:10.0pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";
	color:black;}
p.MsoIndexHeading, li.MsoIndexHeading, div.MsoIndexHeading
	{mso-style-next:"Index 1";
	margin-top:12.0pt;
	margin-right:0in;
	margin-bottom:6.0pt;
	margin-left:0in;
	text-align:center;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	mso-bidi-font-size:15.5pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";
	color:black;
	font-weight:bold;}
span.MsoFootnoteReference
	{vertical-align:super;}
span.MsoEndnoteReference
	{vertical-align:super;}
p.MsoEndnoteText, li.MsoEndnoteText, div.MsoEndnoteText
	{margin:0in;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";
	color:black;}
p.MsoTitle, li.MsoTitle, div.MsoTitle
	{margin:0in;
	margin-bottom:.0001pt;
	text-align:center;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	mso-bidi-font-size:10.0pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";
	color:windowtext;
	font-weight:bold;
	mso-bidi-font-weight:normal;}
p.MsoBodyText, li.MsoBodyText, div.MsoBodyText
	{margin-top:0in;
	margin-right:-.35pt;
	margin-bottom:0in;
	margin-left:0in;
	margin-bottom:.0001pt;
	text-align:justify;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	mso-bidi-font-size:10.0pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";
	color:black;
	mso-ansi-language:EN-GB;}
p.MsoBodyTextIndent, li.MsoBodyTextIndent, div.MsoBodyTextIndent
	{margin-top:0in;
	margin-right:0in;
	margin-bottom:0in;
	margin-left:13.5pt;
	margin-bottom:.0001pt;
	text-align:justify;
	text-indent:.65pt;
	mso-pagination:widow-orphan;
	mso-layout-grid-align:none;
	text-autospace:none;
	font-size:9.0pt;
	mso-bidi-font-size:10.0pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";
	color:black;
	mso-ansi-language:EN-GB;}
p.MsoBodyText2, li.MsoBodyText2, div.MsoBodyText2
	{margin-top:0in;
	margin-right:-.35pt;
	margin-bottom:0in;
	margin-left:0in;
	margin-bottom:.0001pt;
	text-align:justify;
	mso-pagination:widow-orphan;
	border:none;
	mso-border-top-alt:solid windowtext 1.5pt;
	mso-border-bottom-alt:solid windowtext 1.5pt;
	padding:0in;
	mso-padding-alt:1.0pt 0in 1.0pt 0in;
	font-size:11.0pt;
	mso-bidi-font-size:10.0pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";
	color:black;
	mso-ansi-language:EN-GB;}
p.MsoBodyText3, li.MsoBodyText3, div.MsoBodyText3
	{margin:0in;
	margin-bottom:.0001pt;
	text-align:justify;
	mso-pagination:widow-orphan;
	font-size:9.0pt;
	mso-bidi-font-size:10.0pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";
	color:black;
	mso-ansi-language:EN-GB;}
p.MsoBodyTextIndent2, li.MsoBodyTextIndent2, div.MsoBodyTextIndent2
	{margin-top:0in;
	margin-right:0in;
	margin-bottom:0in;
	margin-left:13.5pt;
	margin-bottom:.0001pt;
	text-align:justify;
	mso-pagination:widow-orphan;
	mso-layout-grid-align:none;
	text-autospace:none;
	font-size:9.0pt;
	mso-bidi-font-size:10.0pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";
	color:black;
	mso-ansi-language:EN-GB;}
p.MsoBodyTextIndent3, li.MsoBodyTextIndent3, div.MsoBodyTextIndent3
	{margin-top:0in;
	margin-right:0in;
	margin-bottom:0in;
	margin-left:.5in;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:9.0pt;
	mso-bidi-font-size:10.0pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";
	color:black;}
p.MsoBlockText, li.MsoBlockText, div.MsoBlockText
	{margin-top:0in;
	margin-right:-.35pt;
	margin-bottom:0in;
	margin-left:3.5in;
	margin-bottom:.0001pt;
	text-align:justify;
	text-indent:-3.5in;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	mso-bidi-font-size:10.0pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";
	color:black;}
a:link, span.MsoHyperlink
	{mso-style-parent:"";
	color:blue;
	text-decoration:underline;
	text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
	{color:purple;
	text-decoration:underline;
	text-underline:single;}
strong
	{mso-bidi-font-weight:normal;}
em
	{mso-bidi-font-style:normal;}
p.MsoDocumentMap, li.MsoDocumentMap, div.MsoDocumentMap
	{margin:0in;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	background:navy;
	font-size:11.0pt;
	mso-bidi-font-size:10.0pt;
	font-family:Tahoma;
	mso-fareast-font-family:"Times New Roman";
	mso-bidi-font-family:"Times New Roman";
	color:black;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
	{margin:0in;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Courier New";
	mso-fareast-font-family:"Times New Roman";
	mso-bidi-font-family:"Times New Roman";
	color:windowtext;
	mso-ansi-language:EN-GB;}
p
	{margin-right:0in;
	mso-margin-top-alt:auto;
	mso-margin-bottom-alt:auto;
	margin-left:0in;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";
	color:black;}
span.Typewriter
	{mso-style-name:Typewriter;
	mso-style-parent:"";
	mso-ansi-font-size:10.0pt;
	mso-ascii-font-family:"Courier New";
	mso-hansi-font-family:"Courier New";}
span.l
	{mso-style-name:l;}
@page Section1
	{size:8.5in 11.0in;
	margin:1.0in 1.25in 1.0in 1.25in;
	mso-header-margin:.5in;
	mso-footer-margin:.5in;
	mso-paper-source:0;}
div.Section1
	{page:Section1;}
-->
</style>
<!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext="edit" spidmax="1027"/>
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext="edit">
  <o:idmap v:ext="edit" data="1"/>
 </o:shapelayout></xml><![endif]--><!--[if gte mso 9]><xml>
 <u1:DocumentProperties>
  <u1:Author> </u1:Author>
  <u1:Template>Normal</u1:Template>
  <u1:LastAuthor> </u1:LastAuthor>
  <u1:Revision>1</u1:Revision>
  <u1:TotalTime>0</u1:TotalTime>
  <u1:Created>2005-01-15T18:29:00Z</u1:Created>
  <u1:LastSaved>2005-01-15T18:29:00Z</u1:LastSaved>
  <u1:Pages>4</u1:Pages>
  <u1:Words>1302</u1:Words>
  <u1:Characters>7424</u1:Characters>
  <u1:Company> </u1:Company>
  <u1:Lines>61</u1:Lines>
  <u1:Paragraphs>14</u1:Paragraphs>
  <u1:CharactersWithSpaces>9117</u1:CharactersWithSpaces>
  <u1:Version>9.2720</u1:Version>
 </u1:DocumentProperties>
</xml><![endif]--><!--[if gte mso 9]><xml>
 <u2:WordDocument>
  <u2:DisplayHorizontalDrawingGridEvery>0</u2:DisplayHorizontalDrawingGridEvery>
  <u2:DisplayVerticalDrawingGridEvery>0</u2:DisplayVerticalDrawingGridEvery>
  <u2:UseMarginsForDrawingGridOrigin/>
  <u2:Compatibility>
   <u2:FootnoteLayoutLikeWW8/>
   <u2:ShapeLayoutLikeWW8/>
   <u2:AlignTablesRowByRow/>
   <u2:ForgetLastTabAlignment/>
   <u2:LayoutRawTableWidth/>
   <u2:LayoutTableRowsApart/>
  </u2:Compatibility>
 </u2:WordDocument>
</xml><![endif]-->
</head>

<body bgcolor=silver lang=EN-US link=blue vlink=purple style='tab-interval:
.5in'>

<div class=Section1>

<div align=center>

<table border=0 cellpadding=0 width="80%" bgcolor=white style='width:80.0%;
 mso-cellspacing:1.5pt;background:white;mso-padding-alt:75.0pt 75.0pt 75.0pt 75.0pt'>
 <tr>
  <td width="100%" style='width:100.0%;padding:75.0pt 75.0pt 75.0pt 75.0pt'>
  <p class=MsoTitle align=left style='margin-left:1.0in;text-align:left'><span
  style='font-size:14.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  font-weight:normal;mso-bidi-font-weight:bold'><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></span></p>
  <div align=center>
  <table border=0 cellspacing=0 cellpadding=0 width=432 style='width:4.5in;
   border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
   mso-padding-alt:0in 5.4pt 0in 5.4pt'>
   <tr>
    <td width=492 valign=top style='width:368.75pt;border:solid windowtext .5pt;
    padding:0in 5.4pt 0in 5.4pt'>
    <p class=MsoTitle align=left style='text-align:left'><span
    style='font-size:14.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
    font-weight:normal;mso-bidi-font-weight:bold'><a href="QiPrograms.zip">Download
    Programs</a> <o:p></o:p></span></p>
    </td>
    <td width=492 valign=top style='width:368.75pt;border:solid windowtext .5pt;
    border-left:none;mso-border-left-alt:solid windowtext .5pt;padding:0in 5.4pt 0in 5.4pt'>
    <p class=MsoTitle align=left style='text-align:left'><span
    style='font-size:14.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
    font-weight:normal;mso-bidi-font-weight:bold'><a href="contents.htm">Go to
    Contents Page</a><o:p></o:p></span></p>
    </td>
   </tr>
  </table>
  </div>
  <p class=MsoTitle align=left style='margin-left:1.0in;text-align:left'><span
  style='font-size:14.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  font-weight:normal;mso-bidi-font-weight:bold'><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></span></p>
  <p class=MsoTitle align=left style='margin-left:1.0in;text-align:left'><span
  style='font-size:14.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  font-weight:normal;mso-bidi-font-weight:bold'>Note that this HTML page was
  generated from Word 2000.<span style="mso-spacerun: yes">&nbsp; </span>Some
  of the code cannot be pasted into Qi. You are advised to download the program
  files through the above link.<o:p></o:p></span></p>
  <p class=MsoNormal align=center style='margin-top:0in;margin-right:-.35pt;
  margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt;text-align:center;
  mso-outline-level:1'><span lang=EN-GB style='font-size:18.0pt;mso-bidi-font-size:
  10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></span></p>
  <p class=MsoNormal align=center style='margin-top:0in;margin-right:-.35pt;
  margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt;text-align:center;
  mso-outline-level:1'><span lang=EN-GB style='font-size:18.0pt;mso-bidi-font-size:
  10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>Appendix D<u3:p></u3:p></span></p>
  <p class=MsoNormal align=center style='margin-top:0in;margin-right:-.35pt;
  margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt;text-align:center'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u3:p></u3:p></span></p>
  <p class=MsoNormal align=center style='margin-top:0in;margin-right:-.35pt;
  margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt;text-align:center;
  mso-outline-level:1'><span lang=EN-GB style='font-size:18.0pt;mso-bidi-font-size:
  10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>The Semantics of </span><span lang=EN-GB
  style='font-size:18.0pt;mso-bidi-font-size:10.0pt;font-family:BrushScrD;
  mso-ansi-language:EN-GB'>L<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u3:p></u3:p></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>This appendix describes the semantics</span><!--[if supportFields]><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-begin'></span>
  XE &quot;semantics&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style="mso-spacerun:
  yes">&nbsp;</span>of the pure functional language </span><span lang=EN-GB
  style='font-family:BrushScrD;mso-bidi-font-style:italic'>L </span><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>that is Turing</span><!--[if supportFields]><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-begin'></span>
  XE &quot;<b style='mso-bidi-font-weight:normal'>Turing</b>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style="mso-spacerun:
  yes">&nbsp;</span>complete</span><!--[if supportFields]><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'><span style='mso-element:field-begin'></span> XE &quot;<b
  style='mso-bidi-font-weight:normal'>complete</b>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>. This appendix also gives a series
  of recursive equations that describes how <span style='mso-bidi-font-style:
  italic'>Qi</span> can be compiled into </span><span lang=EN-GB
  style='font-family:BrushScrD;mso-bidi-font-style:italic'>L</span><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>.<span style="mso-spacerun:
  yes">&nbsp; </span>We assume as </span><span lang=EN-GB style='font-family:
  BrushScrD;mso-bidi-font-style:italic'>L</span><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> system functions,</span><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-begin'></span> XE &quot;system functions&quot; </span></b><![endif]--><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-end'></span></span></b><![endif]--><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-bidi-font-weight:bold'><span style="mso-spacerun:
  yes">&nbsp;</span></span></span></b><b><span lang=EN-GB style='font-family:
  AbsolutDB;mso-bidi-font-family:"Courier New"'>+<span style='letter-spacing:
  2.0pt'>+</span></span></b><b><span lang=EN-GB style='font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> </span></b><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-bidi-font-weight:bold'>(the
  successor function)</span><span lang=EN-GB style='font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>,<b>
  </b></span><b><span lang=EN-GB style='font-family:AbsolutDB;mso-bidi-font-family:
  "Courier New"'>--</span></b><b><span lang=EN-GB style='font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> </span></b><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-bidi-font-weight:bold'>(the
  predecessor function)</span><span lang=EN-GB style='font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>,<b>
  @p</b>,<b> if</b>,<b> let</b>,<b> cases</b>, <b>where</b> and <b>cons</b>.<span
  style="mso-spacerun: yes">&nbsp; </span></span><span lang=EN-GB
  style='font-family:BrushScrD;mso-bidi-font-style:italic'>L</span><i><span
  lang=EN-GB style='font-family:"Brush Script MT"'> </span></i><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>contains two special symbols; </span><b><span
  lang=EN-GB style='font-size:10.0pt;font-family:Symbol'>^</span></b><span
  lang=EN-GB style='font-size:10.0pt;font-family:Symbol'> </span><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>designates the error condition and </span><b><span
  lang=EN-GB style='font-size:10.0pt;font-family:Symbol'>�</span></b><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> the special error condition
  generated from unsuccessfully matching an extended abstraction to an input. A
  <b>primitive</b> <b>object</b></span><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-begin'></span></span></b><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> XE &quot;primitive object&quot; \b </span><![endif]--><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-end'></span></span></b><![endif]--><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'><span style="mso-spacerun: yes">&nbsp;</span>of </span><span
  lang=EN-GB style='font-family:BrushScrD;mso-bidi-font-style:italic'>L </span><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>is a string, number, character,
  boolean</span><!--[if supportFields]><span lang=EN-GB style='font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-begin'></span> XE &quot;<b style='mso-bidi-font-weight:
  normal'>boolean</b>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style="mso-spacerun:
  yes">&nbsp;</span>or symbol which is not used as a system function</span><span
  lang=EN-GB style='font-size:10.0pt;font-family:Symbol'>. <u3:p></u3:p></span></p>
  <p class=MsoFootnoteText style='margin-left:.5in'><span style='font-size:
  10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&nbsp;<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;mso-outline-level:1'><span
  style='font-size:14.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>The Syntax of </span><span
  lang=EN-GB style='font-size:14.0pt;mso-bidi-font-size:10.0pt;font-family:
  BrushScrD;mso-ansi-language:EN-GB;mso-bidi-font-style:italic'>L<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&nbsp;<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:1.0in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>A primitive object</span><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-begin'></span> XE &quot;primitive object&quot; \b </span><![endif]--><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-end'></span></span><![endif]--><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style="mso-spacerun: yes">&nbsp;</span>is a formula of </span><span
  lang=EN-GB style='font-family:BrushScrD;mso-ansi-language:EN-GB;mso-bidi-font-style:
  italic'>L</span><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-bidi-font-style:italic'>.<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:1.0in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>( ) is a formula of </span><span
  lang=EN-GB style='font-family:BrushScrD;mso-ansi-language:EN-GB;mso-bidi-font-style:
  italic'>L</span><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>.<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:1.0in'><span style='font-family:Symbol'>^
  </span><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>and </span><b><span lang=EN-GB style='font-family:Symbol;
  mso-ansi-language:EN-GB'>�</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> are formulae of </span><span
  lang=EN-GB style='font-family:BrushScrD;mso-ansi-language:EN-GB;mso-bidi-font-style:
  italic'>L</span><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>.<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:1.0in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>If</span><span style='font-size:8.0pt;
  mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> </span><i><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>x</span></i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>, <i>y</i> and
  <i>z</i></span><span style='font-size:8.0pt;mso-bidi-font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> </span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>are</span><span
  style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> </span><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>formulae</span><span
  style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> </span><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>of </span><span
  lang=EN-GB style='font-family:BrushScrD;mso-ansi-language:EN-GB;mso-bidi-font-style:
  italic'>L</span><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>, so is (if <i>x y z</i>),</span><span style='font-size:
  8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> </span><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>(cons <i>x y</i>),</span><span
  style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> </span><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>(@p <i>x y</i>),</span><span
  style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> </span><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>(where <i>x y</i>),</span><span
  style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> </span><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>(= <i>x y</i>),</span><span
  style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> </span><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>(<i>x y</i>).<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:1.0in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>If <i>x</i> is a variable and <i>y</i>
  and <i>z</i> are formulae of </span><span lang=EN-GB style='font-family:BrushScrD;
  mso-ansi-language:EN-GB;mso-bidi-font-style:italic'>L</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>,
  then (let <i>x y z</i>) is a formula of </span><span lang=EN-GB
  style='font-family:BrushScrD;mso-ansi-language:EN-GB;mso-bidi-font-style:
  italic'>L<i>.</i><u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:1.0in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>If <i>x</i><sub>i</sub>,&#8230;,<i>x</i><sub>n</sub>
  (0 </span><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  i </span><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  n) are formulae of </span><span lang=EN-GB style='font-family:BrushScrD;
  mso-ansi-language:EN-GB;mso-bidi-font-style:italic'>L</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>,
  so is (cases <i>x</i><sub>i</sub>&#8230;<i>x</i><sub>n</sub>).<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:1.0in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&nbsp;<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:1.0in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>A primitive object</span><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-begin'></span> XE &quot;primitive object&quot; \b </span><![endif]--><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-end'></span></span><![endif]--><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style="mso-spacerun: yes">&nbsp;</span>is a pattern.<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:1.0in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>A variable is a pattern.<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:1.0in;tab-stops:315.0pt'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>(
  ) is a pattern.<span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><u3:p></u3:p></span>
  </p>
  <p class=MsoNormal style='margin-left:1.0in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>If <i>p</i><sub>1</sub> and <i>p</i><sub>2</sub>
  are patterns then so is (cons <i>p</i><sub>1</sub> <i>p</i><sub>2</sub>) and
  (@p <i>p</i><sub>1</sub> <i>p</i><sub>2</sub>).<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:1.0in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&nbsp;<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:1.0in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>If <i>p</i> is a pattern and <i>x</i>
  is a formula of </span><span lang=EN-GB style='font-family:BrushScrD;
  mso-ansi-language:EN-GB;mso-bidi-font-style:italic'>L</span><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB;mso-bidi-font-style:italic'> </span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style="mso-spacerun: yes">&nbsp;</span>then the abstraction</span><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-begin'></span> XE &quot;</span><b style='mso-bidi-font-weight:
  normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>abstraction</span></b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span><![endif]--><!--[if supportFields]><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-end'></span></span><![endif]--><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style="mso-spacerun: yes">&nbsp;</span>(</span><span style='font-family:Symbol'>l
  </span><i><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>p</span></i><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> <i>x</i>) is a formula of </span><span
  lang=EN-GB style='font-family:BrushScrD;mso-ansi-language:EN-GB;mso-bidi-font-style:
  italic'>L</span><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>.<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:1.0in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&nbsp;<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:1.0in;mso-outline-level:1'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>If
  <i>v</i> is a variable and the abstraction</span><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-begin'></span> XE &quot;</span><b style='mso-bidi-font-weight:
  normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>abstraction</span></b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span><![endif]--><!--[if supportFields]><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-end'></span></span><![endif]--><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style="mso-spacerun: yes">&nbsp;</span>(</span><span style='font-family:Symbol'>l
  </span><i><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>v</span></i><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style="mso-spacerun:
  yes">&nbsp; </span><i>x</i>) is a formula of </span><span lang=EN-GB
  style='font-family:BrushScrD;mso-ansi-language:EN-GB;mso-bidi-font-style:
  italic'>L</span><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'><span style="mso-spacerun: yes">&nbsp; </span>then </span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>(</span><b><i><span lang=EN-GB
  style='font-family:"Signet Roundhand";mso-ansi-language:EN-GB'>Y</span></i></b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp; </span></span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>(</span><span style='font-family:
  Symbol'>l </span><i><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>v</span></i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style="mso-spacerun: yes">&nbsp; </span><i>x</i>)</span><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>) </span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>is a formula of </span><span
  lang=EN-GB style='font-family:BrushScrD;mso-ansi-language:EN-GB;mso-bidi-font-style:
  italic'>L</span><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>.<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&nbsp;<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;mso-outline-level:1'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>We
  assume that all patterns are linear; i.e. there are no repeated variables.
  Next the rules giving the operational semantics</span><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-begin'></span> XE &quot;</span><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>semantics</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-end'></span></span><![endif]--><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style="mso-spacerun: yes">&nbsp;</span>of </span><span lang=EN-GB
  style='font-family:BrushScrD;mso-ansi-language:EN-GB;mso-bidi-font-style:
  italic'>L</span><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>.<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;mso-outline-level:1'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&nbsp;<u3:p></u3:p></span></p>
  <span style='font-size:12.0pt;font-family:"Times New Roman";mso-fareast-font-family:
  "Times New Roman";color:black;mso-ansi-language:EN-US;mso-fareast-language:
  EN-US;mso-bidi-language:AR-SA'><br clear=all style='mso-special-character:
  line-break;page-break-before:always'>
  </span>
  <p><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>
  <p class=MsoNormal style='margin-left:.5in;mso-outline-level:1'><span
  style='font-size:14.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>The Operational Semantics of </span><span
  style='font-size:14.0pt;mso-bidi-font-size:10.0pt;font-family:BrushScrD'><span
  style="mso-spacerun: yes">&nbsp;</span></span><span lang=EN-GB
  style='font-size:14.0pt;mso-bidi-font-size:10.0pt;font-family:BrushScrD;
  mso-ansi-language:EN-GB;mso-bidi-font-style:italic'>L<u3:p></u3:p></span></p>
  <p class=MsoFootnoteText style='margin-left:.5in'><span style='font-size:
  10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&nbsp;<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  letter-spacing:-.1pt'>The symbol </span><span lang=EN-GB style='font-family:
  Symbol;letter-spacing:-.1pt;mso-ansi-language:EN-GB'>�</span><span
  class=MsoFootnoteReference><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.1pt;mso-ansi-language:
  EN-GB'> </span></span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.1pt'><span
  style="mso-spacerun: yes">&nbsp;</span>means &#8220;rewrites to&#8221; and </span><span
  lang=EN-GB style='font-family:Symbol;letter-spacing:-.1pt;mso-ansi-language:
  EN-GB'>�</span><span class=MsoFootnoteReference><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  letter-spacing:-.1pt;mso-ansi-language:EN-GB'> </span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  letter-spacing:-.1pt'>indicates the normal form</span><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  letter-spacing:-.1pt'><span style='mso-element:field-begin'></span> XE &quot;</span><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.1pt;mso-ansi-language:
  EN-GB'>normal form</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.1pt'>&quot; </span><![endif]--><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  letter-spacing:-.1pt'><span style='mso-element:field-end'></span></span><![endif]--><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  letter-spacing:-.1pt'><span style="mso-spacerun: yes">&nbsp;</span>of an
  expression under rewriting; error(<i>x</i>) indicates <i>x</i> evaluates to </span><b><span
  lang=EN-GB style='font-family:Symbol;letter-spacing:-.1pt;mso-ansi-language:
  EN-GB'>� </span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.1pt'>or</span><span
  style='font-family:Symbol;letter-spacing:-.1pt'> ^. <span
  style="mso-spacerun: yes">&nbsp;</span></span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.1pt'>Rules are
  applied in order of appearance.<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&nbsp;<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;mso-outline-level:1'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>Rule
  #1. (= <i>x</i> <i>y</i>)</span><span style='font-family:Symbol'> </span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><span
  style='font-family:Symbol'> </span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>true if<span style="mso-spacerun:
  yes">&nbsp; </span></span><span lang=EN-GB style='font-family:Symbol;
  mso-ansi-language:EN-GB'>�</span><i><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>x</span></i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> = </span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>y
  </span></i><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'><span style="mso-spacerun: yes">&nbsp;</span>and not
  error(</span><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:
  EN-GB'>�</span><i><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>x</span></i><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>) <u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style="mso-spacerun:
  yes">&nbsp;</span><span style="mso-spacerun: yes">&nbsp;</span><u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;mso-outline-level:1'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>Rule
  #2. (= <i>x</i> <i>y</i>)</span><span style='font-family:Symbol'> </span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><span
  style='font-family:Symbol'> </span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>false if<span style="mso-spacerun:
  yes">&nbsp; </span></span><span lang=EN-GB style='font-family:Symbol;
  mso-ansi-language:EN-GB'>�</span><i><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>x</span></i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> </span><span
  style='font-family:Symbol'>�</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> </span><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>y</span></i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  <u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:1.5in;text-indent:.5in;mso-outline-level:
  1'><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>and
  not error(</span><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:
  EN-GB'>�</span><i><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>x</span></i><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>) and not error(</span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>y</span></i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>)<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&nbsp;<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;mso-outline-level:1'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>Rule
  #3. (= <i>x</i> <i>y</i>)</span><span style='font-family:Symbol'> </span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><span
  style='font-family:Symbol'> ^</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> if<span style="mso-spacerun:
  yes">&nbsp; </span>error(</span><span lang=EN-GB style='font-family:Symbol;
  mso-ansi-language:EN-GB'>�</span><i><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>x</span></i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>) or</span><span
  style='font-family:Symbol'> </span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>error(</span><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>y</span></i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>)<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&nbsp;<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;mso-outline-level:1'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>Rule
  #4. ((</span><span style='font-family:Symbol'>l</span><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> <i>p</i> <i>x</i>)
  <i>y</i>) </span><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:
  EN-GB'>�</span><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> let </span><span style='font-family:Symbol'>s</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  be <i>match</i>(<i>p</i>, </span><span lang=EN-GB style='font-family:Symbol;
  mso-ansi-language:EN-GB'>�</span><i><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>y</span></i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>); if </span><span
  style='font-family:Symbol'>s</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> = </span><b><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span></b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  then </span><b><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:
  EN-GB'>�</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> else <i>sub</i>(</span><span
  style='font-family:Symbol'>s</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>, <i>x</i>)<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&nbsp;<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;mso-outline-level:1'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>Rule
  #5.<span style="mso-spacerun: yes">&nbsp; </span>(if <i>x</i> <i>y</i> <i>z</i>)
  </span><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style="mso-spacerun: yes">&nbsp; </span>if </span><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>x
  </span></i><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>= true then <i>y</i> else if </span><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>x</span></i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  = false then <i>z</i> else </span><span style='font-family:Symbol'>^<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;mso-outline-level:1'><span
  style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:Symbol'>&nbsp;<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>Rule #6.<span style="mso-spacerun:
  yes">&nbsp; </span>(let x y z) </span><span lang=EN-GB style='font-family:
  Symbol;mso-ansi-language:EN-GB'>�</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> ((</span><span style='font-family:
  Symbol'>l </span><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>x z) y)<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&nbsp;<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;mso-outline-level:1'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>Rule
  #7.<span style="mso-spacerun: yes">&nbsp; </span>(cons <i>x</i> <i>y</i>) </span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style="mso-spacerun: yes">&nbsp; </span>if error(</span><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>x</span></i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>)
  or</span><span style='font-family:Symbol'> </span><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>error(</span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>y</span></i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>)
  then </span><span style='font-family:Symbol'>^</span><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> <u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:2.0in;text-indent:.5in;mso-outline-level:
  1'><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>else
  (cons </span><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:
  EN-GB'>�</span><i><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>x</span></i><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> </span><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>y</span></i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>)<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;mso-outline-level:1'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&nbsp;<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;mso-outline-level:1'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>Rule
  #8.<span style="mso-spacerun: yes">&nbsp;&nbsp; </span>(@p <i>x</i> <i>y</i>)
  </span><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style="mso-spacerun: yes">&nbsp; </span>if error(</span><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>x</span></i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>)
  or</span><span style='font-family:Symbol'> </span><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>error(</span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>y</span></i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>)
  then </span><span style='font-family:Symbol'>^</span><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> <u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:2.0in;text-indent:.5in;mso-outline-level:
  1'><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>else
  (@p </span><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>x</span></i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  </span><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>y</span></i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>)<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;mso-outline-level:1'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&nbsp;<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;mso-outline-level:1'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>Rule
  #9.<span style="mso-spacerun: yes">&nbsp;&nbsp; </span>(++ <i>x</i>) </span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>� </span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style="mso-spacerun: yes">&nbsp;</span>if </span><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>x</span></i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  is a number then 1 + </span><span lang=EN-GB style='font-family:Symbol;
  mso-ansi-language:EN-GB'>�</span><i><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>x</span></i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> else </span><span
  style='font-family:Symbol'>^<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&nbsp;<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;mso-outline-level:1'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>Rule
  #10.<span style="mso-spacerun: yes">&nbsp; </span>(- - <i>x</i>) </span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  if </span><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>x</span></i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  is a number then </span><span lang=EN-GB style='font-family:Symbol;
  mso-ansi-language:EN-GB'>�</span><i><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>x</span></i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> - 1 else </span><span
  style='font-family:Symbol'>^<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&nbsp;<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;mso-outline-level:1'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>Rule
  #11. (cases <i>x</i><sub>1</sub> &#8230; <i>x</i><sub>n</sub>) </span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  if </span><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>x</span></i><sub><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>1</span></sub><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  = </span><b><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:
  EN-GB'>�</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> then (cases &#8230; <i>x</i><sub>n</sub>)
  else </span><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:
  EN-GB'>�</span><i><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>x</span></i><sub><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>1</span></sub><i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>.<u3:p></u3:p></span></i></p>
  <p class=MsoNormal style='margin-left:.5in;mso-outline-level:1'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&nbsp;<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;mso-outline-level:1'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>Rule
  #12. (cases) </span><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:
  EN-GB'>�</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> </span><span
  style='font-family:Symbol'>^<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&nbsp;<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;mso-outline-level:1'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>Rule
  #13. (where <i>x y</i>) </span><span lang=EN-GB style='font-family:Symbol;
  mso-ansi-language:EN-GB'>�</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> (if <i>x y </i></span><b><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span></b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>)<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&nbsp;<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;mso-outline-level:1'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>Rule
  #14. </span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>(</span><b><i><span
  lang=EN-GB style='font-family:"Signet Roundhand";mso-ansi-language:EN-GB'>Y</span></i></b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp; </span></span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>(</span><span style='font-family:
  Symbol'>l </span><i><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>v</span></i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> <i>x</i>)</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>) </span><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>� </span><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>[</span><i><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>x</span></i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>]<sub>v/</sub></span><sub><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>(</span></sub><b><i><sub><span
  lang=EN-GB style='font-family:"Signet Roundhand";mso-ansi-language:EN-GB'>Y</span></sub></i></b><sub><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp; </span></span></sub><sub><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>(</span></sub><sub><span
  style='font-family:Symbol'>l </span></sub><i><sub><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>v</span></sub></i><sub><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  <i>x</i>)</span></sub><sub><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>)<u3:p></u3:p></span></sub></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&nbsp;<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;mso-outline-level:1'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>Rule
  #15. (<i>x y</i>) </span><span lang=EN-GB style='font-family:Symbol;
  mso-ansi-language:EN-GB'>�</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style="mso-spacerun:
  yes">&nbsp; </span>if error(</span><span lang=EN-GB style='font-family:Symbol;
  mso-ansi-language:EN-GB'>�</span><i><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>x</span></i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>) or</span><span
  style='font-family:Symbol'> </span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>error(</span><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>y</span></i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>)
  then </span><span style='font-family:Symbol'>^</span><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> else </span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>(</span><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>x</span></i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  </span><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>y</span></i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>)
  <u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;mso-outline-level:1'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&nbsp;<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;mso-outline-level:1'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>Rule
  #16. <i>x</i> </span><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:
  EN-GB'>�</span><span style='font-family:Symbol'> </span><i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>x</span></i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  <u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;mso-outline-level:1'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&nbsp;<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;mso-outline-level:1'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>The
  equations</span><!--[if supportFields]><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-begin'></span>
  XE &quot;</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>equations</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span><![endif]--><!--[if supportFields]><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-end'></span></span><![endif]--><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style="mso-spacerun: yes">&nbsp;</span>for <i>match </i>and <i>sub</i> are as
  follows.<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;mso-outline-level:1'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>Match
  #1. <i>match</i>(<i>x</i>, <i>x</i>) = {}<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>Match #2. where <i>x</i> is a
  variable; <i>match</i>(<i>x</i>, <i>y</i>) = {&lt;<i>x</i>, <i>y</i>&gt;}<span
  style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><u3:p></u3:p></span>
  </p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>Match #3. <i>match</i>((cons <i>x y</i>),
  (cons <i>w z</i>)) <u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:1.0in;text-indent:.5in'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>=
  let </span><span style='font-family:Symbol'>s</span><sub><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>1</span></sub><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  be <i>match</i>(<i>x</i>, <i>w</i>), let </span><span style='font-family:
  Symbol'>s</span><sub><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>2</span></sub><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> be <i>match</i>(<i>y</i>,
  <i>z</i>);<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style="mso-spacerun:
  yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  </span>if </span><span style='font-family:Symbol'>s</span><sub><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>1</span></sub><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  = </span><b><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:
  EN-GB'>�</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> or </span><span style='font-family:
  Symbol'>s</span><sub><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>2</span></sub><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> = </span><b><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span></b><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> </span></b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>then<b>
  </b></span><b><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:
  EN-GB'>�</span></b><b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style="mso-spacerun:
  yes">&nbsp; </span></span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>else </span><span style='font-family:
  Symbol'>s</span><sub><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>1 </span></sub><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><span lang=EN-GB
  style='font-size:12.0pt;mso-bidi-font-size:10.0pt;font-family:Symbol;
  mso-ansi-language:EN-GB'> </span><span style='font-family:Symbol'>s</span><sub><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>2<u3:p></u3:p></span></sub></p>
  <p class=MsoFootnoteText style='margin-left:.5in'><span style='font-size:
  10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>Match
  #4. <i>match</i>((@p <i>x y</i>), (@p <i>w z</i>))<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:1.0in;text-indent:.5in'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>=
  let </span><span style='font-family:Symbol'>s</span><sub><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>1</span></sub><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  be <i>match</i>(<i>x</i>, <i>w</i>), let </span><span style='font-family:
  Symbol'>s</span><sub><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>2</span></sub><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> be <i>match</i>(<i>y</i>,
  <i>z</i>);<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style="mso-spacerun:
  yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  </span>if </span><span style='font-family:Symbol'>s</span><sub><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>1</span></sub><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  = </span><b><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:
  EN-GB'>�</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> or </span><span style='font-family:
  Symbol'>s</span><sub><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>2</span></sub><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> = </span><b><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span></b><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> </span></b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>then<b>
  </b></span><b><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:
  EN-GB'>�</span></b><b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style="mso-spacerun:
  yes">&nbsp; </span></span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>else </span><span style='font-family:
  Symbol'>s</span><sub><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>1 </span></sub><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><span lang=EN-GB
  style='font-size:12.0pt;mso-bidi-font-size:10.0pt;font-family:Symbol;
  mso-ansi-language:EN-GB'> </span><span style='font-family:Symbol'>s</span><sub><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>2<u3:p></u3:p></span></sub></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>Match #5. <i>match</i>(<i>x</i>, <i>y</i>)
  = </span><b><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:
  EN-GB'>�</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> in all cases not covered by Match
  #1-#4<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&nbsp;<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;mso-outline-level:1'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>Sub#1
  <i>sub</i>({}, <i>x</i>) = <i>x</i><u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>Sub#2 <i>sub</i>({&lt;<i>x</i>, <i>y</i>&gt;}
  </span><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  S, <i>z</i>) =<span style="mso-spacerun: yes">&nbsp; </span><i>sub</i>(S, [<i>z</i>]<i><sub>y</sub></i><sub>/<i>x</i></sub>)<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&nbsp;<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>The
  following equations</span><!--[if supportFields]><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-begin'></span> XE &quot;</span><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>equations</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-end'></span></span><![endif]--><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style="mso-spacerun: yes">&nbsp;</span>describe a mapping from pure Qi into </span><span
  lang=EN-GB style='font-family:BrushScrD;mso-ansi-language:EN-GB;mso-bidi-font-style:
  italic'>L</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB;mso-bidi-font-style:
  italic'>;</span><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> variables are italicised and object language symbols are
  bolded.<span style="mso-spacerun: yes">&nbsp;&nbsp; </span>We assume all Qi
  definitions are in cons form. </span><span lang=EN-GB style='font-family:
  Symbol;mso-ansi-language:EN-GB'>� </span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>is our metalevel consing</span><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-begin'></span> XE &quot;</span><b style='mso-bidi-font-weight:
  normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>consing</span></b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span><![endif]--><!--[if supportFields]><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-end'></span></span><![endif]--><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style="mso-spacerun: yes">&nbsp;</span>list</span><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-begin'></span> XE &quot;</span><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>list</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-end'></span></span><![endif]--><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style="mso-spacerun: yes">&nbsp;</span>constructor. <u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&nbsp;<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>compile</span><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-begin'></span> XE &quot;</span><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>compile</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-end'></span></span><![endif]--><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>_Qi(<b>(define</b>
  <i>f</i> </span><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:
  EN-GB'>�</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> </span><i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>rules</span></i><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>)</span></b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>)
  = translate_to_</span><span style='font-family:BrushScrD'>L</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>(
  <i>f</i>, remove_type(<i>rules</i>))<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>compile</span><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-begin'></span> XE &quot;</span><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>compile</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-end'></span></span><![endif]--><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>_Qi(<b>(</b><i>x</i>
  </span><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>� </span><i><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>y</span></i><b><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>)</span></b><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'>) = curry</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>(<b>(</b><i>x</i> </span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>� </span><i><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>y</span></i><b><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>)</span></b><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'>)<span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
  if <i>x</i> </span><span style='font-family:Symbol'>� </span><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>define<u3:p></u3:p></span></b></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>compile</span><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-begin'></span> XE &quot;</span><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>compile</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-end'></span></span><![endif]--><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>_Qi(<b>(
  )</b>)<i> =<b> </b></i><b>( )</b></span></p>
  <u3:p></u3:p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>compile</span><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-begin'></span> XE &quot;</span><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>compile</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-end'></span></span><![endif]--><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>_Qi(<i>x</i>)<i>
  = x<span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
  </i>where<i> x </i>is a primitive expression</span></p>
  <u3:p></u3:p>
  <p class=MsoNormal style='margin-left:.5in'><i><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&nbsp;<u3:p></u3:p></span></i></p>
  <p class=MsoNormal style='margin-left:.5in'><i><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>\ Remove type attached to </span></i><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>Qi<i> function definition \<u3:p></u3:p></i></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>remove_type(<b>({</b> </span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> </span><i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>x</span></i><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>)</span></b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>)
  = remove_type<i>1</i>(<i>x</i>)<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>remove_type(<i>x</i>) = <i>x<span
  style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
  </i>if <i>x</i> is not fronted by <b>{</b><u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&nbsp;<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>remove_type<i>1</i>(<b>(}</b> </span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> </span><i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>x</span></i><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>)</span></b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>)
  = <i>x</i><u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>remove_type<i>1</i>(<b>(</b><i>x</i> </span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> </span><i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>y</span></i><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>)</span></b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>)
  = remove_type<i>1</i>(<i>y</i>)<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>remove_type<i>1</i>(<b>( )</b>) = </span><span
  style='font-family:Symbol'>^<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&nbsp;<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.2pt'>\ <i>place the
  definition into a canonical form for processing and left linear</i></span><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.2pt'><span
  style='mso-element:field-begin'></span></span></i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";letter-spacing:
  -.2pt'> XE &quot;</span><b style='mso-bidi-font-weight:normal'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";letter-spacing:-.2pt;mso-ansi-language:EN-GB'>left linear</span></b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  letter-spacing:-.2pt'>&quot; </span><![endif]--><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.2pt'><span
  style='mso-element:field-end'></span></span></i><![endif]--><i
  style='mso-bidi-font-style:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.2pt'><span
  style='mso-bidi-font-style:italic'>ise the rules \<u3:p></u3:p></span></span></i></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.1pt'>translate_to_</span><span
  style='font-family:BrushScrD;letter-spacing:-.1pt'>L</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  letter-spacing:-.1pt'>(<i>f</i>, <i>rules</i>) = &lt;<i>f</i>,<span
  style="mso-spacerun: yes">&nbsp; </span>mk_abs(map left_linearise,
  canonical_rules(<i>rules</i>)))&gt;<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&nbsp;<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-bidi-font-style:italic'>\ <i>straightforward
  mapping function </i>\<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>map(<i>f</i>, </span><span
  style='font-family:Symbol'>^</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>) = </span><span style='font-family:
  Symbol'>^<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>map(<i>f</i>, <b>( )</b>) = <b>( )</b><u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>map(<i>f</i>, <b>(</b><i>x</i> </span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>� </span><i><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>y</span></i><b><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>)</span></b><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'>) = <b>(</b><i>f</i>(<i>x</i>) </span><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>� </span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>map(<i>f</i>,
  <i>y</i>)<b>)</b><u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&nbsp;<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>canonical_rules(<i>rules</i>) =
  canonical_rules<i>*</i>(elim_wildcard</span><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-begin'></span> XE &quot;</span><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>wildcard</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-end'></span></span><![endif]--><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>s(<i>rules</i>)),
  <b>( )</b>)<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&nbsp;<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>\<i> eliminate wildcard</i></span><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-begin'></span></span></i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>wildcard</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span><![endif]--><!--[if supportFields]><i style='mso-bidi-font-style:normal'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-end'></span></span></i><![endif]--><i
  style='mso-bidi-font-style:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-bidi-font-style:
  italic'>s</span></span></i><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> \<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>elim_wildcard</span><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-begin'></span> XE &quot;</span><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>wildcard</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-end'></span></span><![endif]--><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>s(
  </span><b><span lang=EN-GB style='font-size:12.0pt;mso-bidi-font-size:10.0pt;
  font-family:Traffic;mso-ansi-language:EN-GB'>_</span></b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>)
  = <i>x<span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp; </span></i><span
  style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
  where <i>x</i> is a fresh</span><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-begin'></span> XE &quot;</span><b style='mso-bidi-font-weight:
  normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>fresh</span></b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  \b </span><![endif]--><!--[if supportFields]><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-end'></span></span><![endif]--><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style="mso-spacerun: yes">&nbsp;</span>variable<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>elim_wildcard</span><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-begin'></span> XE &quot;</span><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>wildcard</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-end'></span></span><![endif]--><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>s(<b>(</b><i>x</i>
  </span><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>� </span><i><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>y</span></i><b><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>)</span></b><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'>) </span><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>= map(elim_wildcards, <b>(</b><i>x</i> </span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>� </span><i><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>y</span></i><b><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>)</span></b><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'>)<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>elim_wildcard</span><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-begin'></span> XE &quot;</span><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>wildcard</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-end'></span></span><![endif]--><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>s(<i>x</i>)
  = <i>x</i><span style='mso-tab-count:2'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
  in all other cases<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><i><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&nbsp;<u3:p></u3:p></span></i></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-bidi-font-style:italic'>\ <i>bracket
  each case in the definition </i>\<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>canonical_rules<i>*</i>(<b>( ) ( )) </b>=
  <b>( )</b><u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>canonical_rules<i>*</i>(<b>(</b></span><b><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span></b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> </span><i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>result </span></i><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>where</span></b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  <i>test</i> </span><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:
  EN-GB'>�</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> </span><i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>rules</span></i><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>)</span></b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>,
  <i>patterns</i>)<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>= <b>((where</b> curry(<i>test)</i>
  reverse(<i>patterns</i>) </span><b><span lang=EN-GB style='font-family:Symbol;
  mso-ansi-language:EN-GB'>�</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> curry(<i>result)</i><b>)</b> <u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:1.0in;text-indent:.5in'><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>� </span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>canonical_rules<i>*</i>(<i>rules</i>,
  <b>( )</b>)<b>)<u3:p></u3:p></b></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>canonical_rules<i>*</i>(<b>(</b></span><b><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span></b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> </span><i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>result </span></i><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>where</span></b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  <i>test</i> </span><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:
  EN-GB'>�</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> </span><i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>rules</span></i><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>)</span></b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>,
  <i>patterns</i>)<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>= <b>((where</b> curry(<i>test)</i>
  reverse(<i>patterns</i>) </span><b><span lang=EN-GB style='font-family:Symbol;
  mso-ansi-language:EN-GB'>�</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> insert_fail_if(curry(<i>result)</i>)<b>)</b>
  <u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>canonical_rules<i>*</i>(<b>(</b></span><b><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span></b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> </span><i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>result</span></i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  </span><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> </span><i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>rules</span></i><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>)</span></b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>,
  <i>patterns</i>)<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>= <b>((</b>reverse(<i>patterns</i>) </span><b><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span></b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  curry(<i>result)</i><b>)</b> </span><span lang=EN-GB style='font-family:Symbol;
  mso-ansi-language:EN-GB'>� </span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>canonical_rules<i>*</i>(<i>rules</i>,
  <b>( )</b>)<b>)<span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><u3:p></u3:p>
  </b></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>if <i>result</i> </span><span
  style='font-family:Symbol'>� </span><b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>where<u3:p></u3:p></span></b></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>canonical_rules<i>*</i>(<b>(</b></span><b><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span></b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> </span><i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>result</span></i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  </span><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> </span><i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>rules</span></i><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>)</span></b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>,
  <i>patterns</i>)<span style='mso-tab-count:3'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
  </span></p>
  <u3:p></u3:p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>= <b>((</b>reverse(<i>patterns</i>) </span><b><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span></b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> </span><i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>insert_fail_if</span></i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>(curry(<i>result</i>))<b>)</b>
  </span><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'><span
  style="mso-spacerun: yes">&nbsp;</span></span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>canonical_rules<i>*</i>(<i>rules</i>,
  <b>( )</b>)<b>) </b>if <i>result</i> </span><span style='font-family:Symbol'>�
  </span><b><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>where<u3:p></u3:p></span></b></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>canonical_rules<i>*</i>(<b>(</b><i>p</i>
  </span><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> </span><i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>rules</span></i><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>)</span></b><i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>,
  patterns</span></i><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>) = canonical_rules<i>*</i>(<i>rules</i>,
  <b>(</b><i>p</i> </span><span lang=EN-GB style='font-family:Symbol;
  mso-ansi-language:EN-GB'>�</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> </span><i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>patterns</span></i><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>)</span></b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>)<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>canonical_rules<i>*</i>(<i>x</i>)<i>
  = </i></span><span style='font-family:Symbol'>^<span style='mso-tab-count:
  2'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  in all other cases<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:8.0pt;
  mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&nbsp;<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>curry(<b>(cons</b> <i>x</i> <i>y</i><b>)</b>)
  = <b>(cons</b> curry(<i>x</i>) curry(<i>y</i>)<b>)<u3:p></u3:p></b></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>curry(<b>(@p</b> <i>x</i> <i>y</i><b>)</b>)
  = <b>(@p</b> curry(<i>x</i>) curry(<i>y</i>)<b>)<u3:p></u3:p></b></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>curry(<b>(if</b> <i>x</i> <i>y z</i><b>)</b>)
  = <b>(if</b> curry(<i>x</i>) curry(<i>y</i>) curry(<i>z</i>)<b>)<u3:p></u3:p></b></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>curry(<b>(= </b><i>x</i> <i>y</i><b>)</b>)
  = <b>(=</b> curry(<i>x</i>) curry(<i>y</i>)<b>)</b><u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>curry(<b>(let</b> <i>x</i> <i>y</i> <i>z</i><b>)</b>)
  = <b>(let</b> <i>x</i> curry(<i>y</i>) (curry(<i>z</i>)<b>)<u3:p></u3:p></b></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>curry(<b>(set</b> <i>x</i> <i>y</i><b>)</b>)
  = <b>(set</b> <i>x</i> curry(<i>y</i>)<b>)<u3:p></u3:p></b></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>curry(<b>(</b></span><b><span
  style='font-family:Symbol'>l</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> <i>x</i> <i>y</i><b>)</b>) = <b>(</b></span><b><span
  style='font-family:Symbol'>l</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> <i>x</i> curry(<i>y</i>)<b>)<u3:p></u3:p></b></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>curry(<b>(</b>input+ : <i>x</i><b>)</b>)
  = <b>(</b>input+ : <i>x</i><b>)<u3:p></u3:p></b></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>curry(<b>(</b><i>x</i> </span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> </span><i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>y</span></i><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>)</span></b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>)
  = <b>(</b>curry(<i>x</i>) </span><span lang=EN-GB style='font-family:Symbol;
  mso-ansi-language:EN-GB'>�</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> </span><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>curry(<i>y</i>)<b>)<span
  style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
  </b>where <b>(</b><i>x</i> </span><span lang=EN-GB style='font-family:Symbol;
  mso-ansi-language:EN-GB'>�</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> </span><i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>y</span></i><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>)</span></b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  is not a special form<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>curry(<b>(</b><i>x</i> </span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> </span><i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>y</span></i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  </span><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> </span><i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>z</span></i><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>)</span></b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>)
  = curry(<b>((</b><i>x</i> </span><span lang=EN-GB style='font-family:Symbol;
  mso-ansi-language:EN-GB'>�</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> </span><i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>y</span></i><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>)</span></b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  </span><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> </span><i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>z</span></i><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>)</span></b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>)
  where <b>(</b><i>x</i> </span><span lang=EN-GB style='font-family:Symbol;
  mso-ansi-language:EN-GB'>�</span><i><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> y</span></i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> </span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> </span><i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>z</span></i><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>)</span></b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  is not a special form<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>curry(<i>x</i>) = <i>x</i><span
  style='mso-tab-count:3'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
  where <i>x</i> is not an application<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:8.0pt;
  mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&nbsp;<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-bidi-font-style:italic'>\ <i>insert
  fail ifs </i>\<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>insert_fail_if(<b>(fail-if</b> <i>f x</i><b>)</b>)
  = <b>(fail-if</b> <i>f x</i><b>)<u3:p></u3:p></b></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>insert_fail_if(<i>x</i>) = <b>(fail-if</b>
  <b>(</b></span><b><span style='font-family:Symbol'>l</span></b><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  y (= y</span></b><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> <b>#\Escape))</b><i> x</i><b>)</b><u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:8.0pt;
  mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&nbsp;<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-bidi-font-style:italic'>\ <i>make
  rule left linear</i></span><!--[if supportFields]><i style='mso-bidi-font-style:
  normal'><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'><span style='mso-element:field-begin'></span></span></i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>left linear</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-end'></span></span></i><![endif]--><i
  style='mso-bidi-font-style:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-bidi-font-style:
  italic'><span style="mso-spacerun: yes">&nbsp;</span></span></span></i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-bidi-font-style:italic'>\<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>left_linearise(<i>rule</i>) =
  fixpoint</span><!--[if supportFields]><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-begin'></span>
  XE &quot;</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>fixpoint</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span><![endif]--><!--[if supportFields]><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-end'></span></span><![endif]--><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>(left_linearise*<i>,
  rule</i>)<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>fixpoint</span><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-begin'></span> XE &quot;</span><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>fixpoint</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-end'></span></span><![endif]--><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>(<i>f</i>,
  <i>x</i>) = fixpoint*(<i>f</i>, <i>x</i>, <i>f</i>(<i>x</i>))<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>fixpoint</span><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-begin'></span> XE &quot;</span><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>fixpoint</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-end'></span></span><![endif]--><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>*(<i>f</i>,
  <i>x</i>, <i>y</i>) = <i>x</i><span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
  if <i>x</i> = <i>y</i><u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>fixpoint</span><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-begin'></span> XE &quot;</span><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>fixpoint</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-end'></span></span><![endif]--><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>*(<i>f</i>,
  <i>x</i>, <i>y</i>) = fixpoint*(<i>f</i>, <i>y</i>, <i>f</i>(<i>y</i>))<span
  style='mso-tab-count:1'> </span> if <i>x</i> </span><span style='font-family:
  Symbol'>�</span><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> <i>y</i><u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>left_linearise*(<b>(where</b> <i>test</i>
  <i>patterns</i> <i>arrow</i> <i>result</i><b>)</b>)<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>= let <i>v </i>be rpted_v(<i>patterns</i>)<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-indent:.5in'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>if
  <i>v </i>= false then <b>(where</b> <i>test</i> <i>patterns</i> <i>arrow</i> <i>result</i><b>)</b><u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-indent:.5in'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>else
  let x be any fresh</span><!--[if supportFields]><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-begin'></span> XE &quot;</span><b style='mso-bidi-font-weight:
  normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>fresh</span></b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  \b </span><![endif]--><!--[if supportFields]><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-end'></span></span><![endif]--><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style="mso-spacerun: yes">&nbsp;</span>variable<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-indent:.5in'><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>(where
  (and (=</span></b><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> <i>x v</i><b>)</b> <i>test</i><b>)</b> left_linearise_v(<i>v</i>,
  <i>x</i>, <i>patterns</i>) <i>arrow</i> <i>result</i>)<b>)</b><u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>left_linearise*(<b>(</b><i>patterns</i>
  <i>arrow</i> <i>result</i><b>)</b>)<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>= let <i>v </i>be rpted_v(<i>patterns</i>)
  if <i>v </i>= false then <b>(</b><i>patterns</i> <i>arrow</i> <i>result</i><b>)</b><u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-indent:9.0pt'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>else
  let <i>x</i> be any fresh</span><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-begin'></span> XE &quot;</span><b style='mso-bidi-font-weight:
  normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>fresh</span></b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  \b </span><![endif]--><!--[if supportFields]><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-end'></span></span><![endif]--><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style="mso-spacerun: yes">&nbsp;</span>variable<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-indent:.5in'><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>(where
  (=</span></b><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> <i>x v</i><b>)</b> left_linearise_v(<i>v</i>, <i>x</i>, <i>patterns</i>)
  <i>arrow</i> <i>result</i><b>)<u3:p></u3:p></b></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>rpted_v(<i>patterns</i>) =
  rpted_v*(flatten(<i>patterns</i>))<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>flatten(( )) = ( )<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>flatten((x </span><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  y) </span><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  z) = flatten(append((x </span><span lang=EN-GB style='font-family:Symbol;
  mso-ansi-language:EN-GB'>�</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> y), z))<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>flatten((x </span><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  y)) = (x </span><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:
  EN-GB'>�</span><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> flatten(y))<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:8.0pt;
  mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&nbsp;<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>rpted_v*(( )) = false<span
  style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><u3:p></u3:p></span>
  </p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>rpted_v*((<i>x</i> </span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> </span><i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>y</span></i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>))<span
  style="mso-spacerun: yes">&nbsp; </span>=<span style="mso-spacerun:
  yes">&nbsp; </span>true if <i>x</i> is a variable that occurs in <i>y</i><u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>rpted_v*((<i>x</i> </span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> </span><i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>y</span></i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>))<span
  style="mso-spacerun: yes">&nbsp; </span>= rpted_v*(<i>y</i>)<span
  style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp; </span> otherwise<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:8.0pt;
  mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&nbsp;<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>left_linearise_v(<i>v</i>, <i>x</i>, <i>v</i>)
  = <i>x</i><u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>left_linearise_v(<i>v</i>, <i>x</i>, <b>(</b><i>y</i>
  </span><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> </span><i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>z</span></i><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>)</span></b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>)
  = let <i>ll</i> be left_linearise_v(<i>v, x, y</i>)<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:2.0in;text-indent:.5in'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>if
  <i>ll</i> = <i>y</i> then <b>(</b><i>ll</i> </span><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  left_linearise_v(<i>v</i>, <i>x</i>, <i>z</i>)<b>)</b><u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>left_linearise_v(<i>v</i>, <i>x</i>, <i>y</i>)
  = <i>y</i><span style='mso-tab-count:2'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
  in all other cases<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:8.0pt;
  mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&nbsp;<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-bidi-font-style:italic'>\ <i>create
  an abstraction</i></span><!--[if supportFields]><i style='mso-bidi-font-style:
  normal'><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'><span style='mso-element:field-begin'></span></span></i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>abstraction</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-end'></span></span></i><![endif]--><i
  style='mso-bidi-font-style:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-bidi-font-style:
  italic'><span style="mso-spacerun: yes">&nbsp;</span></span></span></i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-bidi-font-style:italic'>\<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>mk_abs(<i>rules</i>) =
  case_body(fparams(<i>rules</i>), <i>rules</i>)<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>fparams(<i>rules</i>) =
  mk_fparams(arity</span><!--[if supportFields]><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-begin'></span>
  XE &quot;</span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>arity</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-end'></span></span><![endif]--><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>(<i>rules</i>))<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:8.0pt;
  mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&nbsp;<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>arity</span><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-begin'></span> XE &quot;</span><b style='mso-bidi-font-weight:
  normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>arity</span></b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span><![endif]--><!--[if supportFields]><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-end'></span></span><![endif]--><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>(<b>(</b><i>rule</i><b>)</b>)
  = arity_rule(<i>rule</i>)<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>arity</span><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-begin'></span> XE &quot;</span><b style='mso-bidi-font-weight:
  normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>arity</span></b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span><![endif]--><!--[if supportFields]><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-end'></span></span><![endif]--><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>(<b>(</b><i>rule</i>
  </span><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>� </span><i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>rules</span></i><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>)</span></b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>)
  = if arity_rule(<i>rule</i>) = arity(<i>rules</i>) then arity</span><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-begin'></span> XE &quot;</span><b style='mso-bidi-font-weight:
  normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>arity</span></b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span><![endif]--><!--[if supportFields]><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-end'></span></span><![endif]--><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>_rule(<i>rule</i>)
  else </span><span style='font-family:Symbol'>^<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>arity</span><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-begin'></span> XE &quot;</span><b style='mso-bidi-font-weight:
  normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>arity</span></b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span><![endif]--><!--[if supportFields]><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-end'></span></span><![endif]--><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>_rule(<b>(where</b>
  <i>test patterns arrow result</i><b>)</b>) = length(<i>patterns</i>)<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>arity</span><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-begin'></span> XE &quot;</span><b style='mso-bidi-font-weight:
  normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>arity</span></b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span><![endif]--><!--[if supportFields]><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-end'></span></span><![endif]--><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>_rule(<b>(</b><i>patterns
  arrow</i> <i>result</i><b>)</b>) = length(<i>patterns</i>)<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:8.0pt;
  mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&nbsp;<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>length(<b>( )</b>) = 0<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>length((<i>x</i> </span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> </span><i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>y</span></i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>))
  = 1 + length(<i>y</i>)<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:8.0pt;
  mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&nbsp;<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>mk_fparams(0) = <b>( )</b><u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>mk_fparams(<i>n</i>) = <b>(</b><i>x</i>
  </span><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  mk_fparams(<i>n</i> - 1)<b>)</b><span style='mso-tab-count:2'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
  where <i>x</i> is a fresh</span><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-begin'></span> XE &quot;</span><b style='mso-bidi-font-weight:
  normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>fresh</span></b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  \b </span><![endif]--><!--[if supportFields]><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-end'></span></span><![endif]--><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style="mso-spacerun: yes">&nbsp;</span>variable<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:8.0pt;
  mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&nbsp;<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-bidi-font-style:italic'>\ <i>create
  the cases </i>\<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>case_body(<i>params</i>, <i>rules</i>)
  = let <i>rules</i>1 be map(mk_enriched_abs, <i>rules</i>)<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:2.0in;text-indent:.25in'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>let
  <i>rules</i>2 map((</span><span style='font-family:Symbol'>l </span><i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>x</span></i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  mk_app(<i>params</i>, <i>x</i>)), <i>rules</i>1) <u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:2.5in;text-indent:-4.5pt'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>mk_abs(reverse(<i>params</i>),
  <b>(cases</b> </span><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:
  EN-GB'>�</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> </span><i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>rules</span></i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>2<b>)</b>)<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>mk_enriched_abs(<b>(where </b><i>test</i>
  (<i>pattern </i></span><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:
  EN-GB'>�</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> </span><i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>patterns</span></i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>)
  <i>arrow</i> <i>result</i>)<b>)</b> <u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.1pt'>= <b>(</b></span><b><span
  style='font-family:Symbol;letter-spacing:-.1pt'>l </span></b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  letter-spacing:-.1pt'>pattern mk_enriched_abs(<b>(where</b> <i>test</i> <i>patterns</i>
  <i>arrow</i> <i>result</i><b>)</b>)<b>)</b><u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>mk_enriched_abs(<b>((</b><i>pattern</i>
  </span><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> </span><i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>patterns</span></i><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>)</span></b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  <i>arrow</i> <i>result</i><b>)</b>)<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-indent:.5in'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>=
  <b>(</b></span><b><span style='font-family:Symbol'>l </span></b><i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>pattern</span></i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  mk_enriched_abs(<i>patterns</i> <i>arrow</i> <i>result</i>)<b>)</b><u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>mk_enriched_abs(<b>(where <i>test</i></b>
  <b>( )</b></span><b><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:
  EN-GB'> � </span></b><i><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>result</span></i><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>)</span></b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>)
  = <b>(where</b> <i>test</i> <i>result</i><b>)</b><u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>mk_enriched_abs(<b>( )</b> </span><b><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span></b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> </span><i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>result</span></i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>)
  = <i>result<u3:p></u3:p></i></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>mk_enriched_abs(<b>(where </b><i>test</i>
  <b>( )</b> </span><b><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:
  EN-GB'>� </span></b><b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>(fail-if</span></b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  <i>f</i> <i>result</i><b>))</b>) <u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-indent:.5in'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>=
  <b>(where</b> <b>(and</b> <i>test</i> <b>(not (</b><i>f result</i><b>)))</b> <i>result</i><b>)</b><u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>mk_enriched_abs(<b>( )</b> </span><b><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span></b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> </span><b><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>(fail-if</span></b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  <i>f</i> <i>result</i><b>))</b>) = <b>(where</b> <b>(not (</b><i>f result</i><b>))</b>
  <i>result</i><b>)</b><u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:8.0pt;
  mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&nbsp;<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>mk_app((<i>v</i> </span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> </span><i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>vs</span></i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>)
  <i>abs</i>) = mk_app(<i>vs</i>, <b>(</b><i>abs v</i><b>)</b>)<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>mk_app(( ), <i>app</i>) = <i>app</i><u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>mk_abs(( ), <i>x</i>) = <i>x</i><u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>mk_abs(<b>(</b><i>v </i></span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> </span><i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>vs</span></i><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>)</span></b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>,
  <i>x</i>) = mk_abs(<i>v</i>s, <b>(</b></span><b><span style='font-family:
  Symbol'>l</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> <i>v x</i><b>)</b>)<u3:p></u3:p></span></p>
  <p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&nbsp;<u3:p></u3:p></span></p>
  <p class=MsoNormal>&nbsp;<u3:p></u3:p></p>
  </td>
 </tr>
</table>

</div>

<p class=MsoNormal><span style='font-size:12.0pt'><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></span></p>

</div>

</body>

</html>
